    #include "List.h"
    #include <list>


    template<class T>
    void PrintList(const T& t)
    {
        for(auto& x:t)
        {
            std::cout<<x<<" ";
        }
        std::cout<<std::endl;
    }

    void TestStdList01()
    {
        std::list<int> l1;
        std::list<int> l2(10,1);
        std::list<int> l3;
        l3.push_back(1);
        l3.push_back(2);
        l3.push_back(3);
        l3.push_back(4);
        std::list<int>::iterator it = l2.begin();
        // while(it != l2.end())
        // {
        //     std::cout<<*it<<" ";
        //     it++;
        // }
        // std::cout<<std::endl;
        PrintList(l1);
        PrintList(l2);
        PrintList(l3);

    }

    void TestWxdList01()
    {
        wxd::list<int> l1;
        l1.push_back(1);
        l1.push_back(2);
        l1.push_back(3);
        l1.push_back(4);
        l1.push_back(5);

        PrintList(l1);

        l1.erase(l1.begin());
        l1.erase(--l1.end());
        PrintList(l1);

        l1.insert(l1.begin(),0);
        PrintList(l1);
        l1.insert(l1.end(),0);
        PrintList(l1);

        l1.pop_back();
        PrintList(l1);
        l1.pop_front();
        PrintList(l1);

        l1.clear();
        PrintList(l1);

    }


    void TestWxdList02()
    {
        wxd::list<int> l1;
        l1.push_back(1);
        l1.push_back(2);
        l1.push_back(3);
        l1.push_back(4);
        PrintList(l1);

        wxd::list<int> l2 = l1;
        PrintList(l2);
        wxd::list<int> l3;
        l3 = l2;
        PrintList(l3);

    }
    int main()
    {
        //TestStdList01();
        //TestWxdList01();
        TestWxdList02();
        return 0;
    }